package Sort;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

/*
冒泡排序
时间复杂度为O（n^2）
 */
public class BubbleSort {

  public static void main(String[] args) {
//    int num[] = {3,9,-1,10,20};

    int num[] = new int[80000];
    for (int i = 0; i < 80000; i++) {
      num[i] = (int)(Math.random()*80000);//生成一个0到80000的数
    }

//    测试冒泡排序

//    排序前
//    System.out.println("排序前：" + Arrays.toString(num));
    Date date = new Date();
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy--MM-dd HH:mm:ss");
    String dateStr1 = simpleDateFormat.format(date);
    System.out.println("排序前的时间：" + dateStr1);

//    排序后
    bubbleSort(num);

    Date date2 = new Date();
    String dateStr2 = simpleDateFormat.format(date2);
    System.out.println("排序后的时间：" + dateStr2);

  }

  public static void bubbleSort(int[] num){
    int temp = 0;
    boolean flag = false;
    for (int i = 0; i < num.length; i++) {
      for (int j = 0; j < num.length - 1; j++) {
        if (num[j] > num[j+1]){
          flag = true;
          temp = num[j+1];
          num[j+1] = num[j];
          num[j] = temp;
        }
      }
      if (flag == false){//在一趟排序中，一次交换都没有发生过
        break;
      }else {
        flag = false;//重置flag进行下次判断
      }
//      System.out.println("第"+ (i+1) + "排序的结果：" + Arrays.toString(num));
    }
//    System.out.println("最终的结果：" + Arrays.toString(num));
  }
}


